home *** CD-ROM | disk | FTP | other *** search
/ Power CD / Power CD ATARI-Rechner Lieben.iso / DEMOS / COLUMBUS / INFOS / QUICKBAS.TXT < prev   
Encoding:
Text File  |  1994-05-13  |  14.4 KB  |  311 lines

  1. --------------------------------------------------------------------------
  2.            Software-Info zum Konverter GFA- nach QuickBasic 
  3. --------------------------------------------------------------------------
  4.                     Columbus Soft            
  5.                     Kinzigweg 1
  6.                     64297 Darmstadt
  7.                     Tel/Fax: 06151/596875                             
  8.  
  9. Die Übertragung von GFA-Programmen auf den PC ist gewiß kein Thema für
  10. vierfarbige Hochglanzprospekte mit vollmundige Versprechungen. Das
  11. Programm, welches mit einem Kuß den 'GFA-Frosch' in einen 'PC-König'
  12. verwandelt, wird es mit Sicherheit nicht geben. Wer Enttäuschungen und
  13. Fehlinvestitionen vermeiden will, ist gut beraten sich zuvor genaue
  14. Informationen einzuholen um sich mit den Vor- und Nachteilen der
  15. verschiedenen Möglichkeiten vertraut zu machen. 
  16.  
  17. In diesem Sinne soll das vorliegende Software-Info Ihrer Orientierung
  18. dienen. Zunächst werden die grundsätzlichen Möglichkeiten der 
  19. PC-Übertragung vorgestellt und dargelegt, welche Erfahrungen und
  20. Überlegungen zur Entwicklung des QuickBasic-Konverters geführt haben. Im
  21. zweiten Teil des Infos werden Sie mit den Möglichkeiten und Grenzen des
  22. QuickBasic-Konverters bekannt gemacht und erhalten einen detaillierten
  23. Einblick in die Arbeitsweise. 
  24.  
  25. Auf diese Weise können Sie sich ein Bild von machen und selbst entscheiden, ob
  26. der QuickBasic-Konverter für Sie das geeignete Hilfsmittel ist.
  27.  
  28.  
  29. ========================
  30.  (A) Zur PC-Übertragung
  31. ========================
  32.  
  33. Vor einigen Jahren stand an der TH Darmstadt die Aufgabe an, ein
  34. umfangreiches wissenschaftliches Programmpaket, welches vollständig in
  35. GFA-Basic geschrieben war, auf den PC zu übertragen. Auf diese Weise
  36. sollte es einem wesentlich größeren Kreis von Studenten und Anwendern
  37. zugänglich gemacht werden.
  38.  
  39. Bei der Überlegung, wie das am besten zu bewerkstelligen wäre, waren die
  40. folgenden Eckdaten zu beachten:
  41. ++ Die Programme werden ständig gewartet und weiterentwickelt.
  42. ++ Das GFA-Basic hat sich für die Programmierung auf dem Atari bestens
  43.    bewährt und sollte möglichst weiter verwendet werden können.
  44. ++ Ein Umstieg auf eine andere Sprache war jedoch nicht auszuschließen.
  45.  
  46. Die PC-Version des GFA-BASIC war damals noch nicht auf dem Markt. Dafür
  47. wurde von dieser Firma ein C-Konverter angeboten. 
  48.  
  49. --------------------
  50.  Übertragung nach C
  51. --------------------
  52. Da die Sprache C dank des eingebauten Präprozessors prädestiniert ist für
  53. eine parallele Entwicklung auf verschiedenen Systemen, schien der Umstieg
  54. auf diese Sprache zusammen mit diesem Konverter die bequemste Lösung des
  55. Problems zu sein.
  56. Leider erwies sich diese Annahme schnell als Trugschluß. In den
  57. Konvertierungsprodukten wurde nämlich folgende prinzipielle Problematik
  58. deutlich: 
  59.  
  60. - ein vollständig lauffähiges Konvertierungsprodukt kann nur dadurch
  61.   erzeugt werden, daß auf eine umfangreiche C-Funktionsbibliothek
  62.   zurückgegriffen wird. Der größte Teil der Basic-Befehle wird dann durch
  63.   eine simulierende C-Funktion ersetzt. Die Einfachheit der Sprache C
  64.   bleibt dabei auf der Strecke. Die Übersetzung ist schwer zu durchschauen
  65.   und die unweigerlich auftretenden Fehler gerade für den
  66.   Basic-Programmierer kaum aufzuspüren.
  67.  
  68. - Ein Einstieg in die Sprache C ist hiermit keinesfalls zu erreichen. Kein
  69.   C-Programmierer würde je einen derart aufgeblasenen und umständlichen
  70.   Quelltext erzeugen. Adäquate Programme in C sehen völlig anders aus. Die
  71.   spezifischen Vorteile der Sprache C werden durch ein konvertiertes
  72.   Basic-Programm niemals sichtbar.
  73.  
  74.   Ein Beispiel für diese Problematik ist die Umwandlung der BASIC-Zeile
  75.  
  76.      DIM a$(20)
  77.  
  78.   welche in folgenden Befehl umgesetzt wird:
  79.    
  80.      aS_f.p.S2 = (char **)B_dim(6,&aS_f,C_HAR,(long)1,(long)20)
  81.  
  82. - Abgesehen von den prinzipiellen Problemen erwies sich der Konverter
  83.   wegen der ständigen Abstürze als praktisch unbrauchbar.
  84.  
  85. Die grundsätzlichen Nachteile dieses Weges, die auch bei einem
  86. ausgereifterem Produkt nicht anders wären, ließen eine Fortsetzung dieser
  87. Versuche nicht sinnvoll erscheinen.
  88.  
  89. -------------------------------
  90.  Ein 'adäquater' C-Übersetzer?
  91. -------------------------------
  92. Die geschilderten Nachteile ließen sich mit einem Konverter beseitigen,
  93. welcher einen 'adäquaten' C-Quelltext erzeugt, d.h. einen C-Code, wie
  94. ihn ein C-Programmierer zu dem gegebenen Problem formulieren würde.
  95. Wegen der tiefgreifenden strukturellen Unterschiede von Basic und C 
  96. (Variablenorganisation, Speicherverwaltung, Stringbehandlung,...)
  97. önnen auf diese Weise aber praktisch keine lauffähigen Programme produziert
  98. werden, sondern es wären noch umfangreiche manuelle Nacharbeiten notwendig.
  99.  
  100. Sinnvoll ist diese Art der Konvertierung nur dann, wenn das Quellprogramm
  101. ein einziges Mal übertragen werden soll, um dann in C weiterentwickelt
  102. zu werden. Vom Arbeitsaufwand her käme es allerdings einer Neuprogrammierung 
  103. nahe.
  104.  
  105. Da ein kommerzieller Übersetzer dieser Art nicht existierte, wurde auch
  106. dieser Weg nicht weiter verfolgt.
  107.  
  108. ----------------------
  109.  Übertragung in BASIC
  110. ----------------------
  111. Statt dessen wurde als nächstes die Übertragungsmöglichkeit in einen der
  112. PC-Basic-Dialekte (Turbo, GW, Power, Quick,..) untersucht. Im Vergleich
  113. zur C-Konvertierung sind hierbei folgende Vorteile direkt ersichtlich:
  114.  
  115. - Fast alle Programmzeilen können 1:1 übersetzt werden (d.h. einer
  116.   Zeile im Quelltext entspricht eine Zeile im Zieltext mit identischer 
  117.   Funktion und minimalen Abweichungen in der Syntax)
  118. - Die wenigen Befehle, die es im Ziel-Dialekt nicht gibt, werden mit 
  119.   einfachen Basic-Prozeduren simuliert. Es gibt keine 'black boxes',
  120.   die dem Programmierer den Durchblick erschweren.
  121. - Es muß keine völlig neue Sprache gelernt werden, so daß das 
  122.   Bearbeiten des übersetzten Textes keine besonderen Schwierigkeiten ergibt.
  123. - Beim Austesten des Konvertierungsproduktes muß auf den gewohnten
  124.   Interpreter-Komfort nicht verzichtet werden.
  125.  
  126.  
  127. ------------------
  128.  Welcher Dialekt?
  129. ------------------
  130. Bei der Auswahl des am meisten geeigneten Basic-Dialektes zeigte sich das
  131. QuickBasic von Microsoft als beste Lösung was Sprachumfang und
  132. Ähnlichkeit angeht. Mittlerweile ist im Lieferumfang des DOS >5.0 das  
  133. QBasic enthalten, welches bis auf wenige Einschränkungen fast identisch
  134. zum QuickBasic ist. Hiermit ist ein 'kostenloser Einstieg' möglich. Als
  135. höherwertige (und entsprechend teurere) Alternative bietet sich das Basic
  136. PDS 7.1 (ebenfalls von Micrsosoft) an. Die drei Dialekte sind
  137. syntax-kompatibel. Der vergleichsweise hohe Preis der Profi-Version PDS
  138. 7.1 (ca.750DM) liegt einerseits in einer umfangreichen mitgelieferten
  139. Bibliothek begründet und zum andern in der wesentlichen besseren
  140. Speicherausnutzung, mit der sich die 640kB-Begrenzung nicht so schnell
  141. unangenehm bemerkbar macht.
  142.  
  143. -----------------------
  144.  Übertragung per Hand?
  145. -----------------------
  146. Ein erster Vergleich von GFA- und Quickbasic zeigt:
  147.                
  148.  - Eine direkte Übernahme des Quelltextes (Speichern als ASCII-Datei und 
  149.    'Mergen') ist nicht möglich.
  150.  - Eine Anpassung von Hand ist ebenfalls für keinen der Dialekte 
  151.    sinnvoll, da es kaum eine Zeile des GFA-Basic gibt, die nicht
  152.    geändert werden müßte. Dies käme einer Neuprogrammierung gleich.
  153.  
  154.  
  155. ----------------------------------------
  156.  Anforderungen an einen BASIC-Konverter
  157. ----------------------------------------
  158. Es mußte also ein Konverter entwickelt werden, der alle notwendigen Änderungen
  159. automatisch durchführt. 
  160.  
  161.  - Die Übertragung muß vollautomatisch und in einem Programmlauf erfolgen.
  162.  - Manuelle Nacharbeiten sollen nicht notwendig sein.
  163.  - Der Benutzer muß die Übertragung seinen Bedürfnissen anpassen
  164.    können, damit die Verwendung von Toolboxen möglich ist.
  165.  - Spezielle PC-Probleme (Modulgrößen-Begrenzung) müssen ebenfalls
  166.    automatisch gelöst werden.
  167.     
  168. Der im weiteren vorgestellte Konverter ist unter diesen
  169. Gesichtspunkten entwickelt worden.
  170.  
  171.  
  172. ================================================
  173.  (B) Der QuickBasic-Konverter von Columbus Soft
  174. ================================================        
  175. Mit dem QuickBasic-Konverter sind Sie in der Lage Ihre GFA-Basic-
  176. Quelltexte in QuickBasic zu übertragen. 
  177. Ganz ohne Vorarbeiten geht es natürlich nicht. Lediglich bei
  178. GFA-Programmen, die sich eng am Kern der BASIC-Sprache halten ist eine
  179. sofortige Übersetzung durchführbar. Bei allen anderen Programmen ist eine
  180. Vorbereitung des Quelltextes nötig. Aber: Dieses 'Präparieren' muß nur
  181. ein einziges Mal durchgeführt werden. Jeder weitere Übersetzungslauf
  182. funktioniert dann auf Anhieb. Der Umfang der Vorbereitung ist natürlich
  183. von der Art des Programms abhängig: Je mehr Sie systemspezifische
  184. Elemente und Befehle verwendet haben desto größer wird der Aufwand.
  185.  
  186. Damit Sie einen genaue Vorstellung davon bekommen, was der Konverter
  187. leistet und was für Sie zu tun bleibt, ist im weiteren die Arbeitsweise
  188. detailliert erläutert.
  189.  
  190. Sie beruht zum einen auf der Strukturanalyse des zu übertragenden
  191. Programms und damit verbundenen Änderungen und zum anderen auf
  192. Textmustererkennung und -ersetzungen.
  193.  
  194. -------------------
  195.  Strukturanpassung
  196. -------------------
  197. In den Bereich der Strukturumwandlung fallen u.a. folgende Änderungen:
  198.  
  199. - Alle Bezeichner (Variablennamen, Prozedurnamen, Labels,...) werden
  200.   auf Gültigkeit überprüft (Underscores, reservierte Worte, 
  201.   Doppeldeutigkeiten) und gegebenenfalls automatisch geändert.
  202. - Die Variablen-Postfixe werden geändert (z.B. Vertauschen von
  203.   % und &, boolsche Variablen in Integer  umwandeln,...)
  204. - Alle globalen Variablen werden in den Unterprogrammen deklariert, die
  205.   LOCAL-Deklarationen dagegen entfernt.
  206. - Definitionen von Zeilenfunktionen werden aus Unterprogrammen in das
  207.   Hauptprogramm verschoben.
  208. - Kommentare werden von den Zeilenenden abgehängt (oder auch ganz gelöscht).
  209. - Zahlenkonstanten werden umgewandelt.
  210. - Unterprogrammaufrufe mit Parametern werden umgewandelt (Der VAR-Befehl
  211.   in den Prozedurdefinitionen des GFA-Basic existiert nicht. Statt dessen
  212.   müssen bei jedem Aufruf die betreffenden Parameter geklammert werden).
  213.  
  214. ---------------------
  215.  Textmusterersetzung
  216. ---------------------
  217. Der Konverter besitzt einen Textmuster-Ersetzer, mit dem alle
  218. weiteren Änderungen vorgenommen werden können. 
  219. Hiermit wird jeder Befehl, der in den beiden Dialekten nicht identisch
  220. ist, in einen äquivalenten Befehl oder Ausdruck umgewandelt. 
  221. Die Ersetzungskommandos sind nicht fest eingebaut, sondern befinden
  222. sich in ASCII-Dateien, so daß sie vom Benutzer beliebig editiert und verändert 
  223. werden können. 
  224. Dieses offene Konzept ermöglicht zum Beispiel beliebige Toolboxen 
  225. zu verwenden und einzubinden. 
  226.  
  227. ---------------------------------
  228.  Einbinden von Ersatz-Prozeduren
  229. ---------------------------------
  230. Manche Befehle und Funktionen des GFA-Basic lassen sich durch 
  231. QuickBasic-Prozeduren nachbilden. 
  232. Diese können in beliebigen ASCII-Dateien stehen und werden bei Bedarf
  233. vom Konverter dem Übersetzten Quelltext angefügt.
  234.  
  235. ------------------
  236.  Der Präprozessor
  237. ------------------
  238. Mit den Präprozessor-Befehlen lassen sich 
  239. unabhängig von den vorher erläuterten Änderungen 
  240. beliebige Manipulationen vom Benutzer vornehmen. So können Programmzeilen
  241. oder ganze Teile eliminiert oder eingefügt werden. 
  242. Dies ist z.B. für alle Programmteile nötig, für die in der anderen Sprache
  243. kein Pendant existiert. Als einfachstes Beispiel hierfür sei der 
  244. SCREEN-Befehl
  245. genannt, der in GFA-Basic nicht existiert aber in QuickBasic vor allen
  246. Graphik-Ausgaben stehen muß. 
  247.  
  248. ------------------
  249.  Weitere Aufgaben
  250. ------------------
  251. QuickBasic-Programme müssen ab einer bestimmten Größe in Module zerlegt
  252. werden. Auch diese Aufgabe erledigt der Konverter für Sie und erstellt 
  253. darüber hinaus eine INCLUDE-Datei, in welcher alle globalen 
  254. Variablen, sowie alle Prozeduren und Funktionen deklariert werden. 
  255. Außerdem wird eine MAKE-Datei (zum gleichzeitigen Laden aller Module
  256. in den Interpreter) und eine Batchdatei (zum automatischen Compilieren 
  257. und Linken der Module) angelegt.
  258.  
  259. ------------------------
  260.  Sonstige Eigenschaften
  261. ------------------------
  262. Der Konverter ist 'selbstoptimierend', so daß ein zweiter und dritter
  263. Übersetzungsvorgang eines Programms in wesentlich kürzerer Zeit abläuft.
  264.  
  265. ----------------------------------
  266.  Wofür der Konverter sinnvoll ist
  267. ----------------------------------
  268.  
  269. - Für die parallele Entwicklung unter TOS und DOS. Denn dank des
  270.   Präprozessors reicht es aus, den Quelltext ein einziges Mal zu
  271.   präparieren. Die weitere Entwicklung kann auf dem Atari stattfinden.
  272.   Jede neue Version wird auf Knopfdruck übersetzt. Sie verwalten also
  273.   weiterhin nur einen einzigen Programmtext. 
  274. - Für die einmalige Übertragung von mittleren bis großen Programmen. Denn
  275.   selbst wenn Ihr Programm in einigen Teilen nicht kompatibel
  276.   (automatisch übersetzbar) ist, so wird vom Konverter doch für den
  277.   großen Rest ein syntaktisch fehlerloser Code erzeugt, der von Hand nur
  278.   in tagelanger Tipparbeit erzeugt werden könnte. Rechnen Sie selbst aus,
  279.   wie lange Sie für das Umschreiben benötigen würden und wieviel Sie
  280.   somit durch den Konverter sparen.
  281.   
  282. - Für den Einsteig/Umstieg nach QuickBasic (QBasic,Microsoft Basic). Denn
  283.   das Handbuch zum Konverter führt Sie nicht nur in die Arbeitsweise des
  284.   Programms ein sondern erläutert detailliert und anhand von Beispielen
  285.   die Unterschiede der beiden Dialekte und was beim Umstieg zu beachten
  286.   ist.
  287.  
  288. -----------------------------------------
  289.  Wieviel und was kann übertragen werden?
  290. -----------------------------------------
  291. Von den GFA-Befehlen und Funktionen sind etwa die Hälfte in QuickBasic
  292. identisch vorhanden oder durch äquivalente Ausdrücke ersetzbar. Weitere
  293. 25% lassen sich durch Unterprogramme ersetzen. Für 10% muß auf Toolboxen
  294. zurückgegriffen werden. Die restlichen sind entweder nicht sinnvoll oder
  295. nicht übertragbar.
  296.  
  297. Das Handbuch enthält eine alphabetische Referenz aller GFA-Befehle, aus
  298. welcher Sie für jeden einzelnen ersehen können, ob und wie er übertragen
  299. werden kann. Menü-Befehle können unter Verwendung externer Toolboxen
  300. (nicht im Lieferumfang) realisiert werden. Ebenso Alert- und
  301. Fileselectboxen. Programme, in denen Resource-Dateien Verwendung finden,
  302. können nur dadurch übertragen werden, daß die entsprechenden Prozeduren
  303. zum Dialoghandling vollständig 'ausgetauscht' werden.
  304.  
  305. -----------
  306.  Preis
  307. -----------                              
  308. Der QuickBasic-Konverter läuft auf allen Rechnern der ST(E)/TT-Serie in
  309. s/w und Farbe. Sein Preis beträgt 128,-DM. 
  310.  
  311.